上次的程式碼雖然可以登入,但會遇到一個問題,就是直接輸入登入的網址一樣能成功登入而不需要帳號密碼,但這樣並不實際,因此我們需要做更改:
if (body.username === "aaa" && body.password === "123") {
// 登錄成功,返回 login-success.html 頁面
sendResponse(`login-success${selector}.html`, 200, response);
} else {
// 登錄失敗,保持在登入頁面
response.writeHead(302, {
Location: "/login-fail.html"
});
response.end();
}
});
成功登入畫面:
若直接輸入網址:
這個邏輯屬於基於伺服器端的表單驗證(Server-Side Form Validation)。在這種方法中,當用戶提交表單時,伺服器端會處理用戶輸入的數據,如果數據合法,伺服器會返回一個成功的響應,導向成功頁面。如果數據不合法,伺服器會返回一個失敗的響應,保持用戶在登入頁面,用戶需要重新填寫表單。
這種方式的優勢在於,伺服器能夠完全掌控用戶輸入的數據,並且能夠執行更嚴格的驗證和處理。缺點是,用戶體驗可能較差,因為用戶需要等待伺服器的響應,如果登入失敗,用戶需要重新輸入信息。
這種方法的安全性相對較高,因為伺服器能夠避免一些常見的客戶端攻擊,比如 JavaScript 注入攻擊。但需要在伺服器端進行較多的處理和判斷,並且用戶體驗可能不如客戶端驗證(Client-Side Form Validation)那麼流暢。